## Setup, Load Libraries & Report Versions
knitr::opts_chunk$set(echo = TRUE)
## Load Libraries -------------------
## IMPORTANT!
## Please check the paths and files in the file "load_packages_and_functions.R" before running this!
## All .R files must be in the same folder, specified below in 'lib_folder'
lib_folder = "~/ad-omics/ricardo/MyRepo/structuralvariation/R_Library/"
source(paste0(lib_folder,"load_packages_and_functions.R"))
createDT <- function(DF, caption="", scrollY=500){
data <- DT::datatable(DF, caption=caption,
extensions = 'Buttons',
class = "display",
callback = JS("return table;"),
filter = c("none", "bottom", "top"),
escape = TRUE,
style = "default", width = NULL, height = NULL, elementId = NULL,
fillContainer = getOption("DT.fillContainer", NULL),
autoHideNavigation = getOption("DT.autoHideNavigation", NULL),
selection = c("multiple", "single", "none"),
plugins = NULL, editable = FALSE,
options = list( dom = 'Bfrtip',
buttons = c('copy', 'csv', 'excel', 'pdf', 'print'),
scrollY = scrollY, scrollX=T, scrollCollapse = T, paging = T,
columnDefs = list(list(className = 'dt-center', targets = "_all"))
)
)
return(data)
}Structural Variations (SVs) are increasingly recognized for their importance in genomics. Short-read sequencing is the most widely-used approach for genotyping large numbers of samples for SVs but suffers from relatively poor accuracy. SVCollector, is an open-source method that optimally selects samples to maximize variant discovery and validation using long read resequenc- ing or PCR-based validation.
SVCollector has two major ranking modes: topN, and greedy. For the topN mode, it picks samples with the largest number of SVs irrespective if the SVs are shared with other samples. For the greedy mode, it finds a set of samples that collectively contain the largest number of distinct variants. Solving this exactly is computationally intractable as it is a version of the well-known NP-hard set cover problem. Consequently, it uses a greedy approximation thatstarts with the sample with the largest number of variants, and then iteratively picks the sample containing the largest number variants not yet included in the set. It also has a random mode that mimics an arbitrary selection process, and is helpful for evaluating the diversity of the topN or greedy approaches. For each mode, SVCollector reports the rank, sample name, its unique contribution of SVs, the cumulative sum of SVs up to the chosen sample, and the cumulative percentage compared to the total number of SVs in the input VCF file.
root_dir = "~/ad-omics/ricardo/"
svcollector_path = paste0(root_dir,"MyApps/SVCollector/Debug/SVCollector")
svcollector_script = paste0(root_dir,"MyApps/SVCollector/SVCollector.sh")
work_dir = paste0(root_dir,"AMP_AD/LongReadsValidation.gt.filt.DEL.EUR/")
system(paste0("mkdir -p ",work_dir))
ROSMAP_path = paste0(root_dir,"ROSMAP/")
raw_merged_ROSMAP = paste0(ROSMAP_path,"05_MergedSamples/fromSMOOVE/samples_merged_DEL.Final.vcf.gz")
vcf_ROSMAP = paste0(work_dir,"ROSMAP.vcf")
MSBB_path = paste0(root_dir,"MSinai/")
raw_merged_MSBB = paste0(MSBB_path,"05_MergedSamples/fromSMOOVE/samples_merged_DEL.Final.vcf.gz")
vcf_MSBB = paste0(work_dir,"MSBB.vcf")ROSMAP_Ancestry = read.csv(paste0(ROSMAP_path,"01_GeneticPC/pca.ancestry_prediction.csv"), header = T, stringsAsFactors = F, check.names = F, comment.char = "")
ROSMAP_Euro = ROSMAP_Ancestry[ROSMAP_Ancestry$EUR>0.95,]
ROSMAP_samples = system(paste0("ml bcftools; bcftools query -l ", ROSMAP_path, "05_MergedSamples/fromSMOOVE/samples_merged_DEL.Final.vcf.gz"), intern = T)
ROSMAP_samples_to_use = ROSMAP_Euro[ROSMAP_Euro$`#sample`%in%ROSMAP_samples,"#sample"]
sysout = system(paste0("ml bcftools; bcftools view --force-samples -s ", paste0(ROSMAP_samples_to_use, collapse = ","), " ", raw_merged_ROSMAP, " | bcftools sort -o ", vcf_ROSMAP), intern = T)
MSBB_Ancestry = read.csv(paste0(MSBB_path,"01_GeneticPC/pca.ancestry_prediction.csv"), header = T, stringsAsFactors = F, check.names = F, comment.char = "")
MSBB_Euro = MSBB_Ancestry[MSBB_Ancestry$EUR>0.95,]
MSBB_samples = system(paste0("ml bcftools; bcftools query -l ", MSBB_path, "05_MergedSamples/fromSMOOVE/samples_merged_DEL.Final.vcf.gz"), intern = T)
MSBB_samples_to_use = MSBB_Euro[MSBB_Euro$`#sample`%in%MSBB_samples,"#sample"]
sysout = system(paste0("ml bcftools; bcftools view --force-samples -s ", paste0(MSBB_samples_to_use, collapse = ","), " ", raw_merged_MSBB, " | bcftools sort -o ", vcf_MSBB), intern = T)num_samples = 100
cohort = "ROSMAP"
sysout = system(paste("ml parallel;",svcollector_script, vcf_ROSMAP, num_samples, work_dir), intern = T)num_samples = 100
cohort = "ROSMAP"
mode = "greedy"
ROSMAP_output = paste0(work_dir, cohort, "_", mode ,"_rank.txt")
sysout = system(paste0(svcollector_path, " ", mode ," ", # Greedy
vcf_ROSMAP, " ", # Input VCF file
" -1 ", # Min allele count (-1 to disable)
num_samples, # Number of samples to select
" 0 ", # Take AF into account (1) or not (0) per allele
ROSMAP_output # Output file
), intern = T)
ROSMAP_results_greedy = read.table(ROSMAP_output, sep="\t", header = T, check.names = F, comment.char = "")
mode = "topN"
ROSMAP_output = paste0(work_dir, cohort, "_", mode ,"_rank.txt")
sysout = system(paste0(svcollector_path, " ", mode ," ", # topN
vcf_ROSMAP, " ", # Input VCF file
num_samples, " ", # Number of samples to select
ROSMAP_output # Output file
), intern = T)
ROSMAP_results_topN = read.table(ROSMAP_output, sep="\t", header = T, check.names = F, comment.char = "")
mode = "random"
ROSMAP_output = paste0(work_dir, cohort, "_", mode ,"_rank.txt")
sysout = system(paste0(svcollector_path, " ", mode ," ", # random
vcf_ROSMAP, " ", # Input VCF file
num_samples, " ", # Number of samples to select
ROSMAP_output # Output file
), intern = T)
ROSMAP_results_random = read.table(ROSMAP_output, sep="\t", header = T, check.names = F, comment.char = "")cohort = "ROSMAP"
mode = "greedy"
SVCollector_output = paste0(work_dir, cohort, ".vcf.", mode)
SVCollector_results_greedy = read.table(SVCollector_output, sep="\t", header = T, check.names = F, comment.char = "", col.names = c("Sample","numSV","cumsumSV","percSV"))
createDT(SVCollector_results_greedy)cohort = "ROSMAP"
mode = "topN"
SVCollector_output = paste0(work_dir, cohort, ".vcf.", mode)
SVCollector_results_topN = read.table(SVCollector_output, sep="\t", header = T, check.names = F, comment.char = "", col.names = c("Sample","numSV","cumsumSV","percSV"))
createDT(SVCollector_results_topN)cohort = "ROSMAP"
mode = "random.1"
SVCollector_output = paste0(work_dir, cohort, ".vcf.", mode)
SVCollector_results_random = read.table(SVCollector_output, sep="\t", header = T, check.names = F, comment.char = "", col.names = c("Sample","numSV","cumsumSV","percSV"))
createDT(SVCollector_results_random)SVCollector_results_greedy$mode = "greedy"
SVCollector_results_topN$mode = "topN"
SVCollector_results_random$mode = "random"
ROSMAP = rbind(SVCollector_results_greedy,
SVCollector_results_topN,
SVCollector_results_random)num_samples = 100
cohort = "MSBB"
sysout = system(paste("ml parallel;",svcollector_script, vcf_MSBB, num_samples, work_dir), intern = T)num_samples = 100
cohort = "MSBB"
mode = "greedy"
MSBB_output = paste0(work_dir, cohort, "_", mode ,"_rank.txt")
sysout = system(paste0(svcollector_path, " ", mode ," ", # Greedy
vcf_MSBB, # Input VCF file
" -1 ", # Min allele count (-1 to disable)
num_samples, # Number of samples to select
" 0 ", # Take AF into account (1) or not (0) per allele
MSBB_output # Output file
), intern = T)
MSBB_results_greedy = read.table(MSBB_output, sep="\t", header = T, check.names = F, comment.char = "")
mode = "topN"
MSBB_output = paste0(work_dir, cohort, "_", mode ,"_rank.txt")
sysout = system(paste0(svcollector_path, " ", mode ," ", # topN
vcf_MSBB, " ", # Input VCF file
num_samples, " ", # Number of samples to select
MSBB_output # Output file
), intern = T)
MSBB_results_topN = read.table(MSBB_output, sep="\t", header = T, check.names = F, comment.char = "")
mode = "random"
MSBB_output = paste0(work_dir, cohort, "_", mode ,"_rank.txt")
sysout = system(paste0(svcollector_path, " ", mode ," ", # random
vcf_MSBB, " ", # Input VCF file
num_samples, " ", # Number of samples to select
MSBB_output # Output file
), intern = T)
MSBB_results_random = read.table(MSBB_output, sep="\t", header = T, check.names = F, comment.char = "")cohort = "MSBB"
mode = "greedy"
SVCollector_output = paste0(work_dir, cohort, ".vcf.", mode)
SVCollector_results_greedy = read.table(SVCollector_output, sep="\t", header = T, check.names = F, comment.char = "", col.names = c("Sample","numSV","cumsumSV","percSV"))
createDT(SVCollector_results_greedy)cohort = "MSBB"
mode = "topN"
SVCollector_output = paste0(work_dir, cohort, ".vcf.", mode)
SVCollector_results_topN = read.table(SVCollector_output, sep="\t", header = T, check.names = F, comment.char = "", col.names = c("Sample","numSV","cumsumSV","percSV"))
createDT(SVCollector_results_topN)cohort = "MSBB"
mode = "random.1"
SVCollector_output = paste0(work_dir, cohort, ".vcf.", mode)
SVCollector_results_random = read.table(SVCollector_output, sep="\t", header = T, check.names = F, comment.char = "", col.names = c("Sample","numSV","cumsumSV","percSV"))
createDT(SVCollector_results_random)SVCollector_results_greedy$mode = "greedy"
SVCollector_results_topN$mode = "topN"
SVCollector_results_random$mode = "random"
MSBB = rbind(SVCollector_results_greedy,
SVCollector_results_topN,
SVCollector_results_random)par(mfrow=c(1,2))
plot(x = 1:100, y=(1:100)/100, type="n",
main="MSBB", bty="L", xlab="Samples", ylab="Cumulative Fraction of SVs",
xlim=c(0,101),ylim=c(0,1))
grid()
lines(x = 1:100, y=MSBB[MSBB$mode == "greedy","percSV"], type="l", lty = 1, lwd = 2, col = "#BB0021FF")
lines(x = 1:100, y=MSBB[MSBB$mode == "topN","percSV"], type="l", lty = 1, lwd = 2, col = "#3B4992FF")
lines(x = 1:100, y=MSBB[MSBB$mode == "random","percSV"], type="l", lty = 1, lwd = 2, col = "#808180FF")
abline(v=c(10), col=c("gray20"), lty=c(2), lwd=c(1))
minor.tick(nx=5, ny=2, tick.ratio=0.5)
legend(70, 0.30, legend=c("Greedy", "TopN", "Random"), col=c("#BB0021FF", "#3B4992FF", "#808180FF"), lty = 1:1, lwd = 2, cex=0.7)
plot(x = 1:100, y=(1:100)/100, type="n",
main="ROSMAP", bty="L", xlab="Samples", ylab="Cumulative Fraction of SVs",
xlim=c(0,101),ylim=c(0,1))
grid()
lines(x = 1:100, y=ROSMAP[ROSMAP$mode == "greedy","percSV"], type="l", lty = 1, lwd = 2, col = "#BB0021FF")
lines(x = 1:100, y=ROSMAP[ROSMAP$mode == "topN","percSV"], type="l", lty = 1, lwd = 2, col = "#3B4992FF")
lines(x = 1:100, y=ROSMAP[ROSMAP$mode == "random","percSV"], type="l", lty = 1, lwd = 2, col = "#808180FF")
abline(v=c(10), col=c("gray20"), lty=c(2), lwd=c(1))
minor.tick(nx=5, ny=2, tick.ratio=0.5)
legend(70, 0.30, legend=c("Greedy", "TopN", "Random"), col=c("#BB0021FF", "#3B4992FF", "#808180FF"), lty = 1:1, lwd = 2, cex=0.7)Choosing TOP 10 samples from “greedy” mode for each cohort and adding other metadata information.
ROSMAP_metadata = read.table(paste0(ROSMAP_path,"Data/WGS_Metadata.txt"), header = T, stringsAsFactors = F, check.names = F)
ROSMAP_Ancestry = read.csv(paste0(ROSMAP_path,"01_GeneticPC/pca.ancestry_prediction.csv"), header = T, stringsAsFactors = F, check.names = F, comment.char = "")
top_ROSMAP = ROSMAP %>% filter(mode=="greedy") %>% top_n(10,-percSV)
top_ROSMAP$greedy_rank = match(top_ROSMAP$Sample, ROSMAP[ROSMAP$mode=="greedy","Sample"])
top_ROSMAP$topN_rank = match(top_ROSMAP$Sample, ROSMAP[ROSMAP$mode=="topN","Sample"])
top_ROSMAP$random_rank = match(top_ROSMAP$Sample, ROSMAP[ROSMAP$mode=="random","Sample"])
top_ROSMAP = inner_join(top_ROSMAP, ROSMAP_metadata, by=c("Sample" = "wgs_id"))
top_ROSMAP2 = inner_join(top_ROSMAP, ROSMAP_Ancestry, by=c("Sample" = "#sample"))
createDT(top_ROSMAP2)MSBB_metadata = read.table(paste0(MSBB_path,"Data/WGS_Metadata.txt"), header = T, stringsAsFactors = F, check.names = F)
MSBB_Ancestry = read.csv(paste0(MSBB_path,"01_GeneticPC/pca.ancestry_prediction.csv"), header = T, stringsAsFactors = F, check.names = F, comment.char = "")
top_MSBB = MSBB %>% filter(mode=="greedy") %>% top_n(10,-percSV)
top_MSBB$greedy_rank = match(top_MSBB$Sample, MSBB[MSBB$mode=="greedy","Sample"])
top_MSBB$topN_rank = match(top_MSBB$Sample, MSBB[MSBB$mode=="topN","Sample"])
top_MSBB$random_rank = match(top_MSBB$Sample, MSBB[MSBB$mode=="random","Sample"])
top_MSBB = inner_join(top_MSBB, MSBB_metadata, by=c("Sample" = "WGS"))
top_MSBB2 = inner_join(top_MSBB, MSBB_Ancestry, by=c("Sample" = "#sample"))
createDT(top_MSBB2)sessionInfo()## R version 3.5.3 (2019-03-11)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: CentOS Linux 7 (Core)
##
## Matrix products: default
## BLAS/LAPACK: /hpc/packages/minerva-centos7/intel/parallel_studio_xe_2019/compilers_and_libraries_2019.0.117/linux/mkl/lib/intel64_lin/libmkl_gf_lp64.so
##
## locale:
## [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
## [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
## [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
## [7] LC_PAPER=en_US.UTF-8 LC_NAME=C
## [9] LC_ADDRESS=C LC_TELEPHONE=C
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
##
## attached base packages:
## [1] splines stats4 parallel grid stats graphics grDevices
## [8] utils datasets methods base
##
## other attached packages:
## [1] RcppCNPy_0.2.10
## [2] Matrix_1.2-17
## [3] psycho_0.4.91
## [4] cqn_1.28.1
## [5] quantreg_5.38
## [6] SparseM_1.77
## [7] preprocessCore_1.44.0
## [8] nor1mix_1.2-3
## [9] mclust_5.4.3
## [10] gdata_2.18.0
## [11] zoo_1.8-5
## [12] qqman_0.1.4
## [13] gridExtra_2.3
## [14] wesanderson_0.3.6
## [15] ggrepel_0.8.1
## [16] rlist_0.4.6.1
## [17] ggupset_0.1.0
## [18] ggbiplot_0.55
## [19] boot_1.3-20
## [20] wiggleplotr_1.6.1
## [21] Gviz_1.26.5
## [22] edgeR_3.24.3
## [23] factoextra_1.0.5
## [24] vroom_1.0.2
## [25] forcats_0.4.0
## [26] purrr_0.3.3
## [27] readr_1.3.1
## [28] tibble_2.1.3
## [29] tidyverse_1.2.1
## [30] compare_0.2-6
## [31] superheat_0.1.0
## [32] abind_1.4-5
## [33] splitstackshape_1.4.8
## [34] vcfR_1.8.0
## [35] TxDb.Hsapiens.UCSC.hg19.knownGene_3.2.2
## [36] viridis_0.5.1
## [37] viridisLite_0.3.0
## [38] GenomicFeatures_1.34.8
## [39] AnnotationDbi_1.44.0
## [40] readxl_1.3.1
## [41] ggsignif_0.5.0
## [42] venn_1.7
## [43] rtracklayer_1.42.2
## [44] VennDiagram_1.6.20
## [45] futile.logger_1.4.3
## [46] UpSetR_1.4.0
## [47] RColorBrewer_1.1-2
## [48] matrixStats_0.54.0
## [49] flextable_0.5.6
## [50] ChIPseeker_1.18.0
## [51] gtools_3.8.1
## [52] peer_1.0
## [53] ggfortify_0.4.6
## [54] ggiraph_0.7.0
## [55] tables_0.8.8
## [56] Hmisc_4.2-0
## [57] Formula_1.2-3
## [58] survival_2.44-1.1
## [59] lattice_0.20-38
## [60] DT_0.6
## [61] kableExtra_1.1.0
## [62] knitr_1.23
## [63] reshape2_1.4.3
## [64] ggsci_2.9
## [65] ggpubr_0.2
## [66] magrittr_1.5
## [67] cowplot_0.9.4
## [68] uuid_0.1-2
## [69] TnT_1.4.0
## [70] regioneR_1.14.0
## [71] GenomicRanges_1.34.0
## [72] GenomeInfoDb_1.18.2
## [73] variancePartition_1.12.3
## [74] scales_1.0.0
## [75] foreach_1.4.4
## [76] limma_3.38.3
## [77] ggplot2_3.2.1
## [78] janitor_1.2.0
## [79] plyr_1.8.4
## [80] Biostrings_2.50.2
## [81] XVector_0.22.0
## [82] IRanges_2.16.0
## [83] S4Vectors_0.20.1
## [84] multtest_2.38.0
## [85] Biobase_2.42.0
## [86] BiocGenerics_0.28.0
## [87] stargazer_5.2.2
## [88] pander_0.6.3
## [89] stringr_1.4.0
## [90] dplyr_0.8.3
## [91] tidyr_1.0.0
## [92] data.table_1.12.2
## [93] ggplotify_0.0.3
## [94] sjPlot_2.8.1
## [95] pacman_0.5.1
## [96] seqUtils_0.0.0.9000
## [97] bsselectR_0.1.0
## [98] usethis_1.5.0
## [99] devtools_2.0.2
## [100] rmarkdown_1.12
##
## loaded via a namespace (and not attached):
## [1] pbapply_1.4-0 haven_2.2.0
## [3] vctrs_0.2.1 expm_0.999-4
## [5] mgcv_1.8-28 blob_1.1.1
## [7] later_1.0.0 nloptr_1.2.1
## [9] DBI_1.0.0 rstanarm_2.19.2
## [11] jpeg_0.1-8 zlibbioc_1.28.0
## [13] MatrixModels_0.4-1 sjmisc_2.8.2
## [15] htmlwidgets_1.3 mvtnorm_1.0-10
## [17] future_1.13.0 inline_0.3.15
## [19] manipulate_1.0.1 pbkrtest_0.4-7
## [21] markdown_0.9 Rcpp_1.0.1
## [23] KernSmooth_2.23-15 promises_1.1.0
## [25] DelayedArray_0.8.0 ggeffects_0.14.0
## [27] vegan_2.5-5 pkgload_1.0.2
## [29] d3Network_0.5.2.1 fs_1.3.1
## [31] fastmatch_1.1-0 mnormt_1.5-5
## [33] digest_0.6.19 png_0.1-7
## [35] DOSE_3.8.2 ggraph_1.0.2
## [37] pkgconfig_2.0.2 GO.db_3.7.0
## [39] gridBase_0.4-7 dygraphs_1.1.1.6
## [41] estimability_1.3 iterators_1.0.10
## [43] minqa_1.2.4 lavaan_0.6-5
## [45] SummarizedExperiment_1.12.0 rstan_2.19.2
## [47] xfun_0.7 tidyselect_0.2.5
## [49] performance_0.4.2 pkgbuild_1.0.3
## [51] rlang_0.4.0 glue_1.3.1
## [53] ensembldb_2.6.8 gdtools_0.2.1
## [55] modelr_0.1.5 lambda.r_1.2.3
## [57] emmeans_1.3.4 ggcorrplot_0.1.3
## [59] europepmc_0.3 bayestestR_0.4.0
## [61] threejs_0.3.1 httpuv_1.5.2
## [63] BDgraph_2.59 pinfsc50_1.1.0
## [65] TH.data_1.0-10 qgraph_1.6.2
## [67] corpcor_1.6.9 shinystan_2.5.0
## [69] DO.db_2.9 webshot_0.5.1
## [71] jsonlite_1.6 mime_0.6
## [73] bit_1.1-14 systemfonts_0.1.1
## [75] gplots_3.0.1.1 Rsamtools_1.34.1
## [77] stringi_1.4.3 insight_0.7.1
## [79] processx_3.3.1 bitops_1.0-6
## [81] cli_1.1.0 RSQLite_2.1.1
## [83] rsconnect_0.8.13 MuMIn_1.43.15
## [85] officer_0.3.6 rstudioapi_0.10
## [87] GenomicAlignments_1.18.1 nlme_3.1-137
## [89] qvalue_2.14.1 locfit_1.5-9.1
## [91] VariantAnnotation_1.28.13 listenv_0.7.0
## [93] miniUI_0.1.1.1 gridGraphics_0.4-1
## [95] sessioninfo_1.1.1 lifecycle_0.1.0
## [97] munsell_0.5.0 cellranger_1.1.0
## [99] caTools_1.17.1.2 codetools_0.2-16
## [101] coda_0.19-2 bayesplot_1.7.1
## [103] htmlTable_1.13.1 triebeard_0.3.0
## [105] rstantools_2.0.0 xtable_1.8-4
## [107] formatR_1.6 StanHeaders_2.19.0
## [109] farver_1.1.0 biovizBase_1.30.1
## [111] CompQuadForm_1.4.3 sjstats_0.17.7
## [113] shinythemes_1.1.2 futile.options_1.0.1
## [115] dichromat_2.0-0 cluster_2.0.7-1
## [117] future.apply_1.2.0 zeallot_0.1.0
## [119] prettyunits_1.0.2 lubridate_1.7.4
## [121] ggridges_0.5.1 colorRamps_2.3
## [123] igraph_1.2.4.1 fgsea_1.8.0
## [125] sjlabelled_1.1.1 shinyjs_1.0
## [127] remotes_2.0.4 lmerTest_3.1-0
## [129] parameters_0.3.0 testthat_2.1.1
## [131] htmltools_0.4.0 yaml_2.2.0
## [133] loo_2.1.0 MCMCpack_1.4-4
## [135] XML_3.98-1.19 foreign_0.8-71
## [137] withr_2.1.2 BiocParallel_1.16.6
## [139] BayesFactor_0.9.12-4.2 bit64_0.9-7
## [141] effectsize_0.0.1 multcomp_1.4-10
## [143] ProtGenerics_1.14.0 GOSemSim_2.8.0
## [145] memoise_1.1.0 evaluate_0.13
## [147] nonnest2_0.5-2 ggm_2.3
## [149] permute_0.9-5 callr_3.2.0
## [151] ps_1.3.0 curl_3.3
## [153] fdrtool_1.2.15 urltools_1.7.3
## [155] xts_0.11-2 acepack_1.4.1
## [157] checkmate_1.9.3 ppcor_1.1
## [159] blavaan_0.3-8 desc_1.2.0
## [161] nFactors_2.3.3.1 rjson_0.2.20
## [163] rprojroot_1.3-2 tools_3.5.3
## [165] sandwich_2.5-1 RCurl_1.95-4.12
## [167] pbivnorm_0.6.0 ape_5.3
## [169] xml2_1.2.0 httr_1.4.1
## [171] assertthat_0.2.1 globals_0.12.4
## [173] R6_2.4.0 AnnotationFilter_1.6.0
## [175] nnet_7.3-12 progress_1.2.2
## [177] colorspace_1.4-1 generics_0.0.2
## [179] base64enc_0.1-3 pillar_1.4.3
## [181] tweenr_1.0.1 calibrate_1.7.2
## [183] rvcheck_0.1.3 GenomeInfoDbData_1.2.0
## [185] gtable_0.3.0 rvest_0.3.5
## [187] zip_2.0.4 colourpicker_1.0
## [189] psych_1.8.12 latticeExtra_0.6-28
## [191] biomaRt_2.38.0 crosstalk_1.0.0
## [193] doParallel_1.0.14 broom_0.5.2
## [195] huge_1.3.2 BSgenome_1.50.0
## [197] backports_1.1.4 plotrix_3.7-5
## [199] lme4_1.1-21 enrichplot_1.2.0
## [201] mcmc_0.9-6 hms_0.5.3
## [203] ggforce_0.2.2 shiny_1.3.2
## [205] polyclip_1.10-0 numDeriv_2016.8-1
## [207] glasso_1.10 DescTools_0.99.28
## [209] lazyeval_0.2.2 whisker_0.3-2
## [211] crayon_1.3.4 MASS_7.3-51.1
## [213] rpart_4.1-15 compiler_3.5.3